網際網路協議(Internet Protocol, IP)
IP是TCP/IP協議套件中最基礎的網路層協議,主要負責跨越網路邊界傳送數據包(datagrams)。
IP資料以數據包或資料包(data grams)形式傳送,不需要在傳送前建立連接,且提供一個統一定義的地址,使其在傳輸數據時不需要連接確認,這意味著數據包可能會在傳送途中丟失或以受損形式到達目的地。
IP 有兩個版本: IPv4(Internet Protocol Version 4) 和 IPv6(Internet Protocol Version 6) 。目前常用的是 IPv4,使用 32 位元地址,而 IPv6 是改進版本,使用 128 位元的來源和目的地地址。
IP 標頭 (IP Header)
IP標頭中包含許多欄位,以下是常見欄位說明:
-
IP 版本 (Version, 4 bits):指定目前的 IP 協議版本,常設為 4(IPv4)。
-
標頭長度 (Header Length, 4 bits):表示 IP 標頭的長度,通常為 5。
-
服務類型 (Type of Service, TOS, 8 bits):提供服務質量功能,包括 IP 前置的前三位、服務類型的四位及未使用的一位。
-
總長度 (Total Length, 16 bits):指定 IP 數據包的總長度(含標頭及數據部分)。
-
識別 (Identification, 16 bits):用於區分不同數據包的碎片。
-
生存時間 (Time-to-Live, TTL, 8 bits):定義數據包在網路系統中的壽命,每經過一個路由器減少 1,當 TTL 減至 0 時,數據包將被丟棄。
-
協議 (Protocol, 8 bits):指定位於 IP 層上方的下一個封裝協議,如 TCP (Transmission Control Protocol) 或 UDP (User Datagram Protocol)。
-
標頭核對和 (Header Checksum, 16 bits):檢查數據包在傳輸過程中是否出現錯誤,根據 IP 標頭計算得出。
-
來源 IP 地址 (Source IP Address, 32 bits):這是發送方的 IP 地址。
-
目的地 IP 地址 (Destination IP Address, 32 bits):這是接收方的 IP 地址。
-
選項 (Options, 可變長度):這是一個可選欄位,包含可應用於當前 IP 數據包的選項。
-
數據 (Data, 可變長度):包含由高層協議(如 TCP 或 UDP)交由 IP 層處理的數據。
IP協議的兩個版本 (Versions of IP Protocol)
IPv4(Internet Protocol Version 4)是最常用的IP版本,使用32位地址,且支持大約43億個地址。
而由於網路用戶的增長,IPv6(Internet Protocol Version 6)被開發出來,使用了128位地址,擁有極其龐大的地址空間。
IPv6 的標頭設計得更簡潔,主要在提高路由器的處理效率。IPv6 還內建了多播(multicast)和任播(anycast)等功能,並加強了網路層的安全性,集成了IPsec(Internet Protocol Security)安全協議。
IP標頭的協議欄位(Protocol Field)
IP標頭中的協議欄位決定了在協議堆疊中下一層可用的服務。此協議欄位長度為8位元,涵蓋256種協議,多個高層協議可以通過IP使用(多工,multiplexing)。
"Assigned Numbers"(指定號碼)文檔列出了各種協議的數,常見的協議及其對應值(1 個位元組,1 octet)如下:
- 0 (0x00):IPv6 Hop-by-Hop 選項(IPv6 Hop-by-Hop Option)
- 1 (0x01):ICMP 協議(ICMP protocol)
- 2 (0x02):IGMP 協議(IGMP protocol)
- 4 (0x04):IP over IP 協議
- 6 (0x06):TCP 協議(TCP protocol)
- 17 (0x11):UDP 協議(UDP protocol)
- 41 (0x29):IPv6 協議(IPv6 protocol)
這些協議值用於指明 IP 數據包在協議堆疊中的下一個封裝協議。
Internet Protocol Version 6(IPv6)
Internet Protocol Version 6(IPv6) 是目前最新版本的網際網路協議。為了滿足不斷增長的需求,Internet Engineering Task Force (IETF,網際網路工程任務組) 成立了一個名為 Internet Protocol Next Generation (IPng) 的工作組,進行研究、實驗和提出新一代 IP 協議的建議。最終,該工作組確定了 IPv6 的規範,該規範記載於 RFC 2460 的網際網路標準文檔中。專家們認為 IPv6 將取代 IPv4。IPv6 使用來源地址和目的地地址來在網路上傳輸數據包,這一點與 IPv4 相同。IPv6 擁有非常大的地址空間,由 128 位元組成,而 IPv4 僅有 32 位元。
IPv6 的特點 包括:
-
IPv6 網際網路層協議 是為封包交換式(packet-switched)網際網路工作設計的,它提供了在多個 IP 網路間的端到端數據傳輸。
- IPv6 能夠提供一個巨大的地址空間,以滿足互聯網用戶日益增長的需求。
- 它具有新的數據包標頭格式,能減少由路由條目(routing entries)帶來的數據包處理問題。路由器可以更高效且輕鬆地處理 IPv6 標頭。
- IPv6 的地址是全球唯一的,並且擁有有效的分層結構和路由基礎設施,依靠前綴長度而非地址類別進行路由選擇。這允許主幹路由器創建較小的路由表。
-
IPv6 簡化了主機配置,支持無狀態和有狀態的網路接口地址配置。
- 在 IPv6 中,同一鏈路上的主機能夠通過本地鏈路地址(link-local addresses)自動配置自己,這是通過回應本地路由器指定的前綴來實現的。當主機向本地路由器發送鏈路本地地址請求以連接該網路時,路由器會回應並發送其配置參數,使主機能夠自動配置自己。即使在沒有路由器的情況下,IPv6 也能自行配置。
-
IPv6 內建了安全特性,稱為 整合的網際協議安全性(IPsec, Integrated Internet Protocol Security)。這是一組基於加密安全服務的網際網路標準,提供數據機密性、完整性和認證。
- IPv6 支援單播(unicast)和多播(multicast)通信,並新增了一種稱為 任播(anycast) 的通信類型。在任播通信方法中,只有與網路中的特定地址相關聯的接收方會接收到消息。
- IPv6 提供更好的 服務質量(Quality of Service, QoS) 支援,能更有效地管理網路流量。
IPv6 Header
IPv6的大小是IPv4的四倍,然而 IPv6 的標頭僅比 IPv4 大兩倍。IPv6 標頭由一個固定標頭和零個或多個擴展標頭組成。擴展標頭包含協助路由器確定數據包流向的資訊。
IPv6 標頭長度為 40 位元,其中固定標頭的欄位包括:
-
版本(Version, 4 bits):指定網際網路協議的版本。
-
流量類別(Traffic Class, 8 bits):識別屬於相同流量類別的數據包,並區分不同優先級的數據包。
-
流標籤(Flow Label, 20 bits):該欄位防止數據包重新排序,保持同一通信中數據包的順序流。
-
有效負載長度(Payload Length, 16 bits):通知路由器該數據包中有效負載的長度。
-
下一個標頭(Next Header, 8 bits):識別 IPv6 標頭後的標頭類型,位於 IPv6 封包的數據欄位(有效負載)開頭。
-
跳數限制(Hop Limits, 8 bits):取代 IPv4 中的生存時間(TTL)欄位,識別並丟棄因路由資訊錯誤而陷入無限循環的數據包。當計數器歸零時,數據包將被丟棄。
-
來源 IP 地址(Source IP Address, 128 bits):發送方的 IPv6 地址。
-
目的地 IP 地址(Destination IP Address, 128 bits):接收方的 IPv6 地址。
擴展標頭 (Extension Header)
固定標頭僅包含必要的資訊,不常用或不需要的資訊通常會放在固定標頭和高層之間的擴展標頭中。每個擴展標頭都需要一個唯一的值來標識它們。
IPv6 標頭指向第一個擴展標頭。如果有多個擴展標頭,那麼每個擴展標頭都指向下一個擴展標頭,最後一個擴展標頭指向上層的標頭。擴展標頭的排列方式如下:
- IPv6 標頭 (IPv6 header)
- 逐跳選項標頭 (Hop-by-Hop Options header)
- 目的地選項標頭 1 (Destination Options header1)
- 路由標頭 (Routing header)
- 碎片標頭 (Fragment header)
- 驗證標頭 (Authentication header)
- 封裝安全負載標頭 (Encapsulating Security Payload header)
- 目的地選項標頭 2 (Destination Options header2)
- 上層標頭 (Upper-layer header)
擴展標頭按照鏈表的方式排列,一個接著一個。